package com.example.zzy.zzytest.algo.sort.n2sort;

import static com.example.zzy.zzytest.test.LeeTest.exch;

/**
 * 选择排序，第i次循环时选择一个最小值放在第i位
 * 数据规模越小越好
 * 不占用额外内存
 */
public class SelectionSort {
    private static void sort(int[] arr) {
        //第n次排序就把最小值坐标设为n，然后从下一位开始遍历到尾巴寻找最小值
        //需要进行长度-1次比对
        for (int i = 0; i < arr.length - 1; i++) {
            int min = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j;
                }
            }
            if (i != min) {
                exch(arr, i, min);
            }

        }
    }

    public static void main(String[] args) {
        int[] nums = new int[]{3, 1, 5, 0, 6, 2};
        sort(nums);
//        3,1,5,0,6,2
//        0,1,5,3,6,2
//        0,1,2,3,6,5
    }
}
